<script setup lang="ts">
import { onLaunch, onShow, onHide, onUnload } from "@dcloudio/uni-app";
import { useMemberStore } from "@/stores";
const member = useMemberStore()
let interval: number;
onLaunch(() => {
  // 检测小程序版本
  checkVersion()
  // 先执行一次检测
  checkToken()
  // 定义一个定时器 每30秒执行一次检测token是否过期
  interval = setInterval(() => {
    checkToken()
  }, 1000 * 30);
});
onShow(() => {
  console.log("App Show");
});
onHide(() => {
  console.log("App Hide");
});
onUnload(() => {
  clearInterval(interval)
})
// 定时检测token
const checkToken = () => {
  // return
  const userInfo = member.userInfo
  if (!userInfo?.refreshToken) return
  const { expiresTime } = userInfo
  const now = Date.now()
  const time = expiresTime - now
  // console.log("token过期还有" + time / 1000 + "秒");
  // 如果距离过期时间小于5分钟 就刷新token
  if (time > 1000 * 60 * 5) return
  // console.log("开始刷新token");
  member.refreshToken()
};
// 检测小程序版本
const checkVersion = () => {
  const updateManager = uni.getUpdateManager();
  updateManager.onCheckForUpdate(function (res) {
    // 请求完新版本信息的回调
    // console.log(res.hasUpdate);
    if (res.hasUpdate) {
      updateManager.onUpdateReady(function () {
        uni.showModal({
          title: "更新提示",
          content: "新版本已经准备好，是否重启应用？",
          success: function (res) {
            if (res.confirm) {
              // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
              updateManager.applyUpdate();
            }
          }
        })
      })
    }
  });
}
</script>
<style lang="scss">
/* 注意要写在第一行，同时给style标签加入lang="scss"属性 */
@import "uview-plus/index.scss";
</style>
